package com.smedi.ismedi.inmail.core.infrastructure.constant;

public class ConstantField {
    // 租户id
    public final static String tenantId = "tenant_id";

    // 顶层组织id
    public final static String topOrgId = "top_org_id";

    // token
    public final static String token = "ismedi-access-token";

    // token
    public final static String SEPARATOR = ",";

    public final static String DASH = "-";

    public final static String COLONS = ":";

    public final static String ZONE_ID = "Asia/Shanghai";

    // 自增数量
    public final static int pingyinIncrease = 3;

    // 项目管理组织用以控制项目树
    public final static String COMPANY_MANAGEMENT_ORGANIZATION = "COMPANY_MANAGEMENT_ORGANIZATION";

    // 项目管理组织用以控制项目树
    public final static String PROJECT_MANAGEMENT_ORGANIZATION = "PROJECT_MANAGEMENT_ORGANIZATION";

    // token携带权限中企业组织权限部分
    public final static String ACCESS_HR_ORGANIZATION = "hrOrganization";

    // token携带权限中项目权限部分
    public final static String ACCESS_PROJECT = "project";

    public final static String STATE = "STATE";

    public final static String METHOD = "METHOD";

    public final static String method = "method";

    public final static String CANCEL = "CANCEL";

    public final static String NULL = "NULL";

    public final static Long TOKEN_EFFECTIVE_TIME = 60L;
    public final static Long ANNOUNCEMENT_CACHE_KEY = 60L;

    public enum ProjectStatusEnum {
        /**
         * 未开工
         */
        NOT_STARTED("未开工"),
        /**
         * 建设中
         */
        CONSTRUCTING("建设中"),
        /**
         * 停工
         */
        STOPPED("停工"),
        /**
         * 完工
         */
        FINISHED("完工"),
        /**
         * 竣工
         */
        COMPLETED("竣工");

        private final String value;

        ProjectStatusEnum(String value) {
            this.value = value;
        }

        public String getValue() {
            return this.value;
        }

        public static String getValue(String key) {
            for (ProjectStatusEnum projectStatusEnum : ProjectStatusEnum.values()) {
                if (projectStatusEnum.name().equals(key)) {
                    return projectStatusEnum.getValue();
                }
            }
            return "";
        }
    }

    public enum GenderStatusEnum {
        /**
         * 男
         */
        MALE("男"),
        /**
         * 女
         */
        FEMALE("女");

        private final String value;

        GenderStatusEnum(String value) {
            this.value = value;
        }

        public String getValue() {
            return this.value;
        }

        public static String getValue(String key) {
            for (GenderStatusEnum genderStatusEnum : GenderStatusEnum.values()) {
                if (genderStatusEnum.name().equals(key)) {
                    return genderStatusEnum.getValue();
                }
            }
            return "";
        }
    }

    public enum EpcTypeEnum {
        /**
         * 自营
         */
        SELF_SUPPORT,
        /**
         * 联合体
         */
        CONSORTIUM,
        /**
         * 自营+联合体
         */
        SELF_SUPPORT_CONSORTIUM
    }

    public enum HrOrganizationTypeEnum {
        /**
         * 公司
         */
        COMPANY,
        /**
         * 公司领导
         */
        COMPANY_LEADER,
        /**
         * 公司管理组织
         */
        COMPANY_MANAGEMENT_ORGANIZATION,
        /**
         * 项目管理组织
         */
        PROJECT_MANAGEMENT_ORGANIZATION,
        /**
         * 下级部门
         */
        SUBORDINATE_ORGANIZATION
    }

    public enum TimeTypeEnum {
        /**
         * 周
         */
        WEEK,
        /**
         * 月
         */
        MONTH,
        /**
         * 季
         */
        QUARTER
    }

    public enum AnnouncementTypeEnum {
        /**
         * 集团
         */
        GROUP,
        /**
         * 总院
         */
        INSTITUTION,
        /**
         * 上级主管部门
         */
        SUPERIOR_AUTHORITY
    }

    public enum OrganizationTypeEnum {
        /**
         * 公司
         */
        COMPANY,
        /**
         * 公司管理组织
         */
        COMPANY_MANAGEMENT_ORGANIZATION,
        /**
         * 项目管理组织
         */
        PROJECT_MANAGEMENT_ORGANIZATION,
        /**
         * 下级组织
         */
        SUBORDINATE_ORGANIZATION
    }

    public enum HiddenDangerStatusEnum {
        /**
         * 待整改
         */
        TO_BE_RECTIFIED,
        /**
         * 待复查
         */
        TO_BE_REVIEWED,
        /**
         * 退回整改
         */
        RETURN_FOR_RECTIFICATION,
        /**
         * 已完成
         */
        COMPLETED,
        /**
         * 已关闭
         */
        CLOSED,
    }

    public enum EducationTypeEnum {
        /**
         * 每日晨会
         */
        DAILY_MORNING,
        /**
         * 节前教育
         */
        PRE_FESTIVAL,
        /**
         * 特殊教育
         */
        SPECIAL_TRAINING
    }

    public enum MonitorTypeEnum {
        /**
         * 默认
         */
        DEFAULT_TYPE("默认"),
        /**
         * 免装
         */
        NOT_INSTALLED("免装"),
        /**
         * 暂停
         */
        STOPPED("暂停");

        private final String value;

        MonitorTypeEnum(String value) {
            this.value = value;
        }

        public String getValue() {
            return this.value;
        }

        public static String getValue(String key) {
            for (MonitorTypeEnum monitorTypeEnum : MonitorTypeEnum.values()) {
                if (monitorTypeEnum.name().equals(key)) {
                    return monitorTypeEnum.getValue();
                }
            }
            return "";
        }
    }

    public enum MonitorOnlineStatusEnum {
        /**
         * 停工
         */
        STOP("停工"),
        /**
         * 完工
         */
        FINISH("完工"),
        /**
         * 免装
         */
        NOT_INSTALL("免装"),
        /**
         * 暂停
         */
        PAUSE("暂停"),
        /**
         * 已上线
         */
        INLINE("已上线"),
        /**
         * 未上线
         */
        OUTLINE("未上线");

        private final String value;

        MonitorOnlineStatusEnum(String value) {
            this.value = value;
        }

        public String getValue() {
            return this.value;
        }

        public static String getValue(String key) {
            for (MonitorOnlineStatusEnum monitorOnlineStatusEnum : MonitorOnlineStatusEnum.values()) {
                if (monitorOnlineStatusEnum.name().equals(key)) {
                    return monitorOnlineStatusEnum.getValue();
                }
            }
            return "";
        }
    }

    public enum LaborStatus {
        /**
         * 在场
         */
        IN,
        /**
         * 离场
         */
        OUT
    }
}


